//
//  WBBaseViewController.swift
//  SinaApp
//
//  Created by shui on 2018/3/22.
//  Copyright © 2018年 shui. All rights reserved.
//

import UIKit


///所有主控制器的基类控制器
///Swift 中,利用 extension 可以把'函数'按照功能分类管理,便于阅读和维护
///注意 : 1. extension 中不能有属性;    2. extension 中不能重写父类方法,重写父类方法是子类的职责, extension(拓展)是对类拓展
class WBBaseViewController: UIViewController {
    
    ///表格视图 - 如果用户没有登录,就不需要创建
    var mainTableView : UITableView?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        initUI()
        initData()
    }
    
    /// 加载数据 - 具体的实现由子类负责
    func initData(){
        
    }
}


// MARK: - 设置界面
extension WBBaseViewController{
    
    @objc func initUI() {
        setNavBarAppearence()
        setBarButtonItem()
        setupTableview()
        view.backgroundColor = UIColor.cz_random()
    }
    
    
    /// 设置表格视图
    private func setupTableview(){
        mainTableView = UITableView(frame: view.bounds, style: .plain)
        view.addSubview(mainTableView!)
        mainTableView?.delegate = self
        mainTableView?.dataSource = self
    }
    
    /// 设置导航按钮
    private func setBarButtonItem()
    {
        let item = UIBarButtonItem(title: "", style:.plain, target: self, action: nil)
        self.navigationItem.backBarButtonItem = item;
    }
    
    /// 设置导航条
    private func setNavBarAppearence()
    {
        // 设置导航栏默认的背景颜色
        WRNavigationBar.defaultNavBarBarTintColor = UIColor.cz_color(withHex: 0xF6F6F6)
        // 设置导航栏所有按钮的默认颜色
        WRNavigationBar.defaultNavBarTintColor = .darkGray
        // 设置导航栏标题默认颜色
        WRNavigationBar.defaultNavBarTitleColor = .darkGray
        // 统一设置状态栏样式
        // WRNavigationBar.defaultStatusBarStyle = .lightContent
        // 如果需要设置导航栏底部分割线隐藏，可以在这里统一设置
        WRNavigationBar.defaultShadowImageHidden = true
    }
}


// MARK: - UITableViewDelegate,UITableViewDataSource
extension WBBaseViewController: UITableViewDelegate,UITableViewDataSource{
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    
    /**
     基类只是准备方法,子类负责具体的实现
     子类的数据源方法不需要 super
     */
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //        只是保证没有语法错误
        return UITableViewCell()
    }
    
}






